package com.ant.collect.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
import org.springframework.web.filter.CorsFilter;

@Configuration
public class CorsConfig {
    @Bean
    public CorsFilter corsFilter() {
        // 1. 创建 CORS 配置对象
        CorsConfiguration config = new CorsConfiguration();
        // 允许跨域的源（* 表示允许所有，生产环境建议指定具体域名）
        config.addAllowedOriginPattern("*");
        // 允许跨域的请求头（必须包含 Sa-Token 的 Token 头，默认是 Authorization）
        config.addAllowedHeader("*");
        // 允许跨域的请求方式（GET、POST、PUT、DELETE 等）
        config.addAllowedMethod("*");
        // 是否允许携带 Cookie（如果前端需要传递 Cookie，这里必须设为 true）
        config.setAllowCredentials(true);
        // 预检请求的有效期（单位：秒），避免频繁预检
        config.setMaxAge(3600L);

        // 2. 配置路径映射（所有路径都应用上述 CORS 规则）
        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        source.registerCorsConfiguration("/**", config);

        // 3. 返回 CorsFilter 对象
        return new CorsFilter(source);
    }
}
